// 示例：如何在子应用中获取主应用的用户状态

// 方法1: 直接调用全局函数获取用户状态
function getCurrentUserState() {
  // 检查全局函数是否存在
  if (typeof window.getMainAppUserState === 'function') {
    return window.getMainAppUserState();
  }
  return { isLoggedIn: false, user: null };
}

// 方法2: 监听用户状态变化事件
window.addEventListener('main-app-user-state-change', function(event) {
  const userState = event.detail;
  console.log('用户状态发生变化:', userState);
  
  // 在这里可以更新子应用的UI
  updateSubAppUI(userState);
});

// 方法3: 在需要时主动获取用户状态
function checkLoginStatus() {
  const userState = getCurrentUserState();
  
  if (userState.isLoggedIn) {
    console.log('用户已登录:', userState.user);
    // 执行已登录用户的逻辑
    handleLoggedInUser(userState.user);
  } else {
    console.log('用户未登录');
    // 执行未登录用户的逻辑
    handleGuestUser();
  }
}

// 更新子应用UI的示例函数
function updateSubAppUI(userState) {
  // 这里可以根据用户状态更新子应用的UI
  const userInfoElement = document.getElementById('user-info-display');
  if (userInfoElement) {
    if (userState.isLoggedIn) {
      userInfoElement.textContent = `欢迎, ${userState.user.username}!`;
      userInfoElement.style.display = 'block';
    } else {
      userInfoElement.style.display = 'none';
    }
  }
}

// 处理已登录用户的示例函数
function handleLoggedInUser(user) {
  // 在这里可以执行已登录用户的特定逻辑
  console.log('处理已登录用户:', user);
}

// 处理访客用户的示例函数
function handleGuestUser() {
  // 在这里可以执行访客用户的特定逻辑
  console.log('处理访客用户');
}

// 导出函数供子应用使用
window.MicroFrontendUserUtils = {
  getCurrentUserState,
  checkLoginStatus
};

// 使用示例
// 在子应用中可以这样使用：
/*
import { MicroFrontendUserUtils } from '../main/src/user-state-usage-example';

// 获取当前用户状态
const userState = MicroFrontendUserUtils.getCurrentUserState();
console.log('当前用户状态:', userState);

// 检查登录状态
MicroFrontendUserUtils.checkLoginStatus();
*/